<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 设计一个构造函数, 利用这个构造函数可以创建对象, 每个对象表示平面上的一个点,
// 每个对象应该提供一个方法: 功能是, 可以计算这个点和其他点之间的距离
function Point(x, y){
    this.x = x;
    this.y = y;
    this.distance = function (other){
        return Math.sqrt((this.x - other.x) * (this.x - other.x)
            + (this.y - other.y) * (this.y - other.y))
    }
}

var p1 = new Point(10, 20);
var p2 = new Point(20, 30);
console.log(p1);
console.log(p2);

console.log(p1.distance(p2));
console.log(p2.distance(p1));

// 设计一个构造函数, 表示平面上的一个圆. 提供两个方法: 一个计算这个圆的周长, 一个计算这个圆的面积
// 再增加一个功能, 可以计算两个圆的圆心之间的距离
function Circle(r, centerCircle){
    this.r = r;
    this.centerCircle = centerCircle;
    this.perimeter = function (){
        return Math.PI * 2 * this.r;
    }
    this.area = function (){
        return Math.PI * this.r * this.r;
    }
    this.dist = function (other){
        return this.centerCircle.distance(other.centerCircle)
    }
}
// 设计一个构造函数, 它的对象表示一本书, 每本书包含作者, 出版社, 出版日期.
// 显示这个本书的信息.   并能计算这本书到现在已经出版了多少天
var c1 = new Circle(10, p1);
var c2 = new Circle(30, p2);
console.log(c1.perimeter());
console.log(c1.area());
console.log(c1.dist(c2));
console.log(c1.centerCircle.x);
console.log(c1.centerCircle.y);

</script>
</body>
</html>
<!--
    作者：李振超  2017年8月15日14:15
    变量和函数:
        都是小驼峰  第一个单词的首字母小写, 其他单词的首字母大写
     
    构造函数:
        大驼峰
        所有的单词的首字母大写
       
        
-->